#ifndef __COLOR_H
#define __COLOR_H

/**
@brief Se encarga de manejar los colores mediante las componentes R,G,B
*/
class Color{
	private:
		/**
		@brief Componente roja del color
		*/
		int r;
		/**
		@brief Componente verde del color
		*/
		int g;
		/**
		@brief Componente azul del color
		*/
		int b;
	
	public:

		/**
		@brief Constructor por defecto. Contruye un color con todas sus componentes a 0.
		*/
		Color();
		
		/**
		@brief Constructor por valor
		@param r Componente roja del color
		@param g Componente verde del color
		@param b Componente azul del color
		@pre r mayor o igual que 0 y menor que 256 
		@pre g mayor o igual que 0 y menor que 256
		@pre b mayor o igual que 0 y menor que 256
		*/
		Color(int r,int g,int b);

		/**
		@brief Devuelve la componente roja del color
		@return Número que corresponde a la componente roja del color
		*/
		int GetR() const;
		/**
		@brief Devuelve la componente verde del color
		@return Número que corresponde a la componente verde del color
		*/
		int GetG() const;
		/**
		@brief Devuelve la componente azul del color
		@return Número que corresponde a la componente azul del color
		*/
		int GetB() const;
		/**
		@brief Modifica la componente roja del color
		@param r Entero que corresponde a la componente roja del color
		@pre r mayor o igual que 0 y menor que 256
		*/
		void SetR(int r);
		/**
		@brief Modifica la componente verde del color
		@param g Entero que corresponde a la componente verde del color
		@pre g mayor o igual que 0 y menor que 256
		*/
		void SetG(int g);
		/**
		@brief Modifica la componente azul del color
		@param b Entero que corresponde a la componente azul del color
		@pre b mayor o igual que 0 y menor que 256
		*/
		void SetB(int b);
		/**
		@brief Modifica las tres componentes del color
		@param r Entero que corresponde a la componente roja del color
		@param g Entero que corresponde a la componente verde del color
		@param b Entero que corresponde a la componente azul del color		
		@pre r mayor o igual que 0 y menor que 256 
		@pre g mayor o igual que 0 y menor que 256
		@pre b mayor o igual que 0 y menor que 256
		*/
		void SetColor(int r,int g,int b);
		
		/**
		@brief Destructor
		*/
		~Color();
};
#endif

